二元搜尋法(Binary Search),又稱作折半搜尋法、對數搜尋法,適用於有序陣列中搜尋目標元素的演算法,此演算法每進行一次比較將使搜尋範圍縮小一半。搜尋的過程從中間的元素開始,若中間的元素為搜尋的目標元素,則回傳中間值並結束搜尋 ; 若搜尋的目標元素大於或小於中間元素,則縮小搜尋範圍至目標元素所處的那一半範圍進行搜尋,重複進行此步驟直至搜尋到目標元素。若搜尋結果的回傳值皆為空,則代表此目標元素不在範圍內。
範例說明
題目 : { 1, 3, 5, 7, 9, 11, 13}在此排序的陣列中利用二分搜尋法尋找目標元素 3。
Step 1 : 尋找中間值,7 / 2 = 3.5, 第四個元素7為中間值,目標元素的值3小於中間值7,因此縮小搜尋範圍,將搜尋範圍的索引值縮小至0 ~ 2。
Step 2 : 在縮小範圍後的陣列 { 1, 3, 5 } 中再次搜尋中間值,3 / 2 = 1.5, 第二個元素3為中間值,目標元素的值3與中間值3相等,到這邊搜尋結束,並回傳搜尋的目標值。
優點:
缺點:
參考資料:二元搜尋法 - 維基百科